package com.nantong.admin.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nantong.admin.domain.SalesOrder;
import com.nantong.admin.domain.model.request.salesorder.SalesOrderSearch;
import com.nantong.admin.domain.model.response.salesorder.SalesOrderVo;
import com.nantong.common.mybatis.core.page.PageQuery;
import com.nantong.common.mybatis.core.page.TableDataInfo;

/**
 * 销售订单Service接口
 */
public interface ISalesOrderService extends IService<SalesOrder> {
    /**
     * 分页查询销售订单列表
     *
     * @param salesOrderSearch 销售订单查询条件
     * @param pageQuery        分页参数
     * @return 销售订单分页列表
     */
    TableDataInfo<SalesOrderVo> selectPageList(SalesOrderSearch salesOrderSearch, PageQuery pageQuery);

    /**
     * 查询销售订单列表
     *
     * @param salesOrderSearch 销售订单查询条件
     * @return 销售订单列表
     */
    List<SalesOrderVo> searchList(SalesOrderSearch salesOrderSearch);

    /**
     * 根据ID查询销售订单信息
     *
     * @param salesOrderId 销售订单ID
     * @return 销售订单信息
     */
    SalesOrderVo selectSalesOrderById(Long salesOrderId);

    /**
     * 新增销售订单
     *
     * @param salesOrder 销售订单信息
     * @return 结果
     */
    int insertSalesOrder(SalesOrder salesOrder);

    /**
     * 修改销售订单
     *
     * @param salesOrder 销售订单信息
     * @return 结果
     */
    int updateSalesOrder(SalesOrder salesOrder);

    /**
     * 删除销售订单信息
     *
     * @param salesOrderId 销售订单ID
     * @return 结果
     */
    int deleteSalesOrderById(Long salesOrderId);

    /**
     * 销售统计
     *
     * @param search 统计查询条件
     * @return 统计结果
     */
    com.nantong.admin.domain.model.response.salesorder.SalesStatisticsVo getSalesStatistics(com.nantong.admin.domain.model.request.salesorder.SalesStatisticsSearch search);
}

